package problem.ej1;
import input.LeerArchEntradaEj1;

import java.util.*;

import output.EscribirArchSalidaEj1;
import test.TestEj1;

/**
 * @author
 * 
 */
public class Ej1 {

	/**
	 * @param args
	 */
	
	public static int contadorParaTest; ///tengo que inicializarlo en 0 cada vez que ejecuto un nuevo test
	
	public static int[] unirOrdenados(int[] array_a, int[] array_b, int size_a,
			int size_b) {
		int[] array_res;
		array_res = new int[size_a + size_b];
		int i_b = 0, i_a = 0;

		for (int i = 0; i < size_a + size_b; i++) {
			contadorParaTest++;
			if (size_a == i_a) {
				array_res[i] = array_b[i_b];
				contadorParaTest++;
				i_b++;
				contadorParaTest++;
			} else {
				if (size_b == i_b) {
					array_res[i] = array_a[i_a];
					contadorParaTest++;
					i_a++;
					contadorParaTest++;
				} else {
					if (array_b[i_b] < array_a[i_a]) {
						// /si el elemento que sigue de b es menor que el
						// elemento que sigue de a, que ponga el de b primero y
						// sume 1 a i_b
						array_res[i] = array_b[i_b];
						contadorParaTest++;
						i_b++;
						//contadorParaTest++;
					} else {
						array_res[i] = array_a[i_a];
						contadorParaTest++;
						i_a++;
						contadorParaTest++;
					}
				}
			}
		}
		return array_res;
	}

	public static int buscarMeseta(int[] array, int size) {
		int meseta_MAX = 0;
		int meseta_ACTUAL = 0;
		int ultimo_num = array[0];

		for (int i = 0; i < size; i++) {
			contadorParaTest++;
			if (ultimo_num == array[i]){
				meseta_ACTUAL++;
				contadorParaTest++;
			}else {
				// /entro a este else si se me "terminó" la meseta
				if (meseta_ACTUAL > meseta_MAX)
					meseta_MAX = meseta_ACTUAL;
				contadorParaTest++;
				ultimo_num = array[i];
				contadorParaTest++;
				meseta_ACTUAL = 1;
				contadorParaTest++;
			}
		}
		// /agrego la proxima linea por si la meseta estaba al final
		if (meseta_ACTUAL > meseta_MAX)
			meseta_MAX = meseta_ACTUAL;
			contadorParaTest++;
		return meseta_MAX;
	}
	
	
	
	

//	public static LinkedList<int[]> deArchivoALista (String nombArch){
//		LeerArchEntradaEj1 lector = new LeerArchEntradaEj1(nombArch);
//		
//	}


	public static void main(String[] args) throws Exception{

		EscribirArchSalidaEj1.deListaAArchivo(TestEj1.generarTestSinRepetidos(400), "./src/resources/sinRepetidos.in");
		EscribirArchSalidaEj1.deListaAArchivo(TestEj1.generarTestTodosIguales(400), "./src/resources/todosIguales.in");		
/* ya tengo ambos tests generados en "./src/resources/" y ahora los cargo y los ejecuto y mido su rendimiento y guardo
 *  la info para pasársela al QtiPlot
 */
		TestEj1.testRendimiento("./src/resources/sinRepetidos.in");
		TestEj1.testRendimiento("./src/resources/todosIguales.in");
		
		TestEj1.testCorrectitud("./src/test/test.correctitud.txt");
		
		
		
		
		
		
		
		

		
	}
}
